package com.nine.algorithm.recursion.pascaltriangle;

/**
 * @author nine
 * @version 1.0
 * @description 杨辉三角-进一步优化性能问题【使用数组优化空间】【动态规划的简单案例】
 * @date 24/5/3 11:26
 */
public class PascalTriangle3 {


	/**
	 * 0    0    0    0    0    0    初始状态
	 * 1    0    0    0    0    0
	 * 1    1    0    0    0    0
	 * 1    2    1    0    0    0
	 * 1    3    3    1    0    0
	 * 1    4    6    4    1    0
	 * 1    5    10   10   5    1
	 */

	/**
	 * 创建一行数组
	 *
	 * @param row
	 * @param i
	 */
	private static void createRow(int[] row, int i) {
		if (i == 0) {
			row[0] = 1;
			return;
		}
		for (int j = i; j > 0; j--) {
			row[j] = row[j] + row[j - 1];
		}
	}

	public static void print(int n) {
		// 定义数组，存放每行数据
		int[] row = new int[n];
		for (int i = 0; i < n; i++) {
			createRow(row, i);
			// printSpace(n, i);
			for (int j = 0; j <= i; j++) {
				System.out.printf("%-4d", row[j]);
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		// 计算某一行某一列的元素值
		// System.out.println(element(4, 2));
		print(10);
	}


}
